import type { TabBar } from "@uni-helper/vite-plugin-uni-pages";

type FgTabBarItem = TabBar["list"][0] & {
	icon: string;
	iconType: "uiLib" | "unocss" | "iconfont";
};

/**
 * tabbar 选择的策略，更详细的介绍见 tabbar.md 文件
 * 0: 'NO_TABBAR' `无 tabbar`
 * 1: 'NATIVE_TABBAR'  `完全原生 tabbar`
 * 2: 'CUSTOM_TABBAR_WITH_CACHE' `有缓存自定义 tabbar`
 * 3: 'CUSTOM_TABBAR_WITHOUT_CACHE' `无缓存自定义 tabbar`
 *
 * 温馨提示：本文件的任何代码更改了之后，都需要重新运行，否则 pages.json 不会更新导致错误
 */
export const TABBAR_MAP = {
	NO_TABBAR: 0,
	NATIVE_TABBAR: 1,
	CUSTOM_TABBAR_WITH_CACHE: 2,
	CUSTOM_TABBAR_WITHOUT_CACHE: 3
};
// TODO：通过这里切换使用tabbar的策略
export const selectedTabbarStrategy = TABBAR_MAP.NATIVE_TABBAR;

// selectedTabbarStrategy==NATIVE_TABBAR(1) 时，需要填 iconPath 和 selectedIconPath
// selectedTabbarStrategy==CUSTOM_TABBAR(2,3) 时，需要填 icon 和 iconType
// selectedTabbarStrategy==NO_TABBAR(0) 时，tabbarList 不生效
export const tabbarList: FgTabBarItem[] = [
	{
		iconPath: "static/tabbar/home.png",
		selectedIconPath: "static/tabbar/homeHL.png",
		pagePath: "pages/index/index",
		text: "首页",
		icon: "home",
		// 选用 UI 框架自带的 icon 时，iconType 为 uiLib
		iconType: "uiLib"
	},
	{
		iconPath: "static/tabbar/example.png",
		selectedIconPath: "static/tabbar/exampleHL.png",
		pagePath: "pages/about/about",
		text: "关于",
		icon: "i-carbon-code",
		// 注意 unocss 的图标需要在 页面上引入一下，或者配置到 unocss.config.ts 的 safelist 中
		iconType: "unocss"
	}
	// {
	//   pagePath: 'pages/my/index',
	//   text: '我的',
	//   icon: '/static/logo.svg',
	//   iconType: 'local',
	// },
	// {
	//   pagePath: 'pages/mine/index',
	//   text: '我的',
	//   icon: 'iconfont icon-my',
	//   iconType: 'iconfont',
	// },
];

// NATIVE_TABBAR(1) 和 CUSTOM_TABBAR_WITH_CACHE(2) 时，需要tabbar缓存
export const cacheTabbarEnable = selectedTabbarStrategy === TABBAR_MAP.NATIVE_TABBAR || selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE;

const _tabbar: TabBar = {
	// 只有微信小程序支持 custom。App 和 H5 不生效
	custom: selectedTabbarStrategy === TABBAR_MAP.CUSTOM_TABBAR_WITH_CACHE,
	color: "#999999",
	selectedColor: "#018d71",
	backgroundColor: "#fff",
	borderStyle: "black",
	height: "60px",
	fontSize: "10px",
	iconWidth: "24px",
	spacing: "3px",
	list: tabbarList as unknown as TabBar["list"]
};

// 0和1 需要显示底部的tabbar的各种配置，以利用缓存
export const tabBar = cacheTabbarEnable ? _tabbar : undefined;
